const async = require('async');                               
// 引入async模块
 const Constant = require('../constant/constant');            
// 引入常量模块 
// 定义一个对象 
const exportObj = {   clone,   checkParams,   autoFn }; 
module.exports = exportObj;                              // 导出对象，方便其他方法调用 
/** 
*	克隆方法，克隆一个对象 
*	@param obj 
*	@returns {any} 
 */ 
function clone(obj) {   return JSON.parse(JSON.stringify(obj)); 
} 
/** 
*	校验参数全局方法 
*	@param params   请求的参数集 
*	@param checkArr 需要验证的参数 
*	@param cb       回调 
 */ 
function checkParams (params, checkArr, cb) {   let flag = true;   checkArr.forEach(v => {     if (!params[v]) {       flag = false; 
    }   });   if (flag) {     cb(null);   }else{ 
    cb(Constant.LACK); 
  } } 
/** 
*	返回统一方法，返回JSON格式数据 
*	@param tasks  当前controller执行tasks 
*	@param res    当前controller responese 
*	@param resObj 当前controller返回json对象 
 */ 
function autoFn (tasks, res, resObj) {   async.auto(tasks, function (err){     if (!!err) {       console.log (JSON.stringify(err));       res.json({         code: err.code || Constant.DEFAULT_ERROR.code,         msg: err.msg || JSON.stringify(err) 
      });     } else { 
      res.json(resObj); 
    } 
  }); 
}
